import random
from colorama import *
import os

# 初始化 colorama
init(autoreset=True)

# 全局变量
win = 0         # 赢的局数
los = 0         # 输的局数
time = 0        # 总猜测次数
game = 0        # 游戏局数

def title():
    print(Style.RESET_ALL + Back.CYAN + '  -------------------------------  ')
    print(Style.RESET_ALL + Back.CYAN + '    ---<     猜数字 v2     >---    ')
    print(Style.RESET_ALL + Back.CYAN + '    作者：飙志                     ')
    print(Style.RESET_ALL + Back.CYAN + '    邮箱：BiaoZyx@outlook.com      ')
    print(Style.RESET_ALL + Back.CYAN + '    版本：v2.0                     ')
    print(Style.RESET_ALL + Back.CYAN + '    日期：2025-5-25                ')
    print(Style.RESET_ALL + Back.CYAN + '  -------------------------------  ')

def menu():
    print('\n')
    print(Style.RESET_ALL + Back.MAGENTA + '  -------------------------------  ')
    print(Style.RESET_ALL + Back.MAGENTA + '    ---<     游戏菜单     >---     ')
    print(Style.RESET_ALL + Back.MAGENTA + '    输入一个数字开始游戏。         ')
    print(Style.RESET_ALL + Back.MAGENTA + '    /help    : 帮助信息            ')
    print(Style.RESET_ALL + Back.MAGENTA + '    /menu    : 查看菜单            ')
    print(Style.RESET_ALL + Back.MAGENTA + '    /reset   : 重置游戏            ')
    print(Style.RESET_ALL + Back.MAGENTA + '    /version : 查看版本信息        ')
    print(Style.RESET_ALL + Back.MAGENTA + '    /clear   : 清屏                ')
    print(Style.RESET_ALL + Back.MAGENTA + '    /exit    : 退出游戏            ')
    print(Style.RESET_ALL + Back.MAGENTA + '  -------------------------------  ')
    print('\n')

def help():
    print('\n')
    print(Style.RESET_ALL + Back.GREEN + '  -------------------------------  ')
    print(Style.RESET_ALL + Back.GREEN + '    ---<     游戏帮助     >---     ')
    print(Style.RESET_ALL + Back.GREEN + '    输入一个1~100间的整数。        ')
    print(Style.RESET_ALL + Back.GREEN + '    每局有7次机会。                ')
    print(Style.RESET_ALL + Back.GREEN + '    猜对了就算成功！               ')
    print(Style.RESET_ALL + Back.GREEN + '    猜错了会提示大了还是小了。     ')
    print(Style.RESET_ALL + Back.GREEN + '    提示：使用二分法可以更快猜中。 ')          
    print(Style.RESET_ALL + Back.GREEN + '  -------------------------------  ')
    print('\n')

def clear():
    os.system('cls' if os.name == 'nt' else 'clear')

def over(num, guess, c):
    global win, los, time, game
    if num == guess:
        print(Style.RESET_ALL + Back.MAGENTA + '  -------------------------------  ')
        print(Style.RESET_ALL + Back.MAGENTA + '    ---<     游戏结束     >---     ')
        print(Style.RESET_ALL + Back.MAGENTA + '    您赢了！谢谢你的参与！         ')
        print(Back.MAGENTA + Fore.BLUE + f'    正确答案： {num}                  ')
        print(Back.MAGENTA + Fore.BLUE + f'    所有次数： {time}                  ')
        print(Style.RESET_ALL + Back.MAGENTA + f'    使用次数： {c}                  ')
        print(Back.MAGENTA + Fore.BLUE + f'    所有局数： {game}                  ')
        print(Back.MAGENTA + Fore.GREEN + f'    赢的局数： {win}                  ')
        print(Back.MAGENTA + Fore.RED + f'    输的局数： {los}                  ')
        print(Style.RESET_ALL + Back.MAGENTA + '  -------------------------------  ')
        print('\n')
        win += 1
    else:
        print(Style.RESET_ALL + Back.MAGENTA + '  -------------------------------  ')
        print(Style.RESET_ALL + Back.MAGENTA + '    ---<     游戏结束     >---     ')
        print(Style.RESET_ALL + Back.MAGENTA + '    您输了！谢谢你的参与！         ')
        print(Back.MAGENTA + Fore.BLUE + f'    正确答案： {num}                  ')
        print(Back.MAGENTA + Fore.BLUE + f'    所有次数： {time}                  ')
        print(Style.RESET_ALL + Back.MAGENTA + f'    使用次数： {c}                  ')
        print(Back.MAGENTA + Fore.BLUE + f'    所有局数： {game}                  ')
        print(Back.MAGENTA + Fore.GREEN + f'    赢的局数： {win}                  ')
        print(Back.MAGENTA + Fore.RED + f'    输的局数： {los}                  ')
        print(Style.RESET_ALL + Back.MAGENTA + '  -------------------------------  ')
        print('\n')
        los += 1

def reset():
    global win, los, time, game
    win = 0
    los = 0
    time = 0
    game = 0
    print(Back.YELLOW + Style.RESET_ALL + '游戏已重置！')

# 主循环
try:
    title()
    print(Back.YELLOW + Style.RESET_ALL + '输入一个数字开始游戏。')
    print(Back.YELLOW + Style.RESET_ALL + '输入 /help 查看帮助信息。')
    print(Back.YELLOW + Style.RESET_ALL + '输入 /menu 查看菜单。')
    while True:
        game += 1
        num = random.randint(1, 100)
        c = 0  # 当前局内使用次数

        for count in range(7):
            user_input = input(Fore.BLUE + '输入 > ' + Style.RESET_ALL).strip()
            # 命令判断
            if user_input == '/menu':
                menu()
                continue
            if user_input == '/version':
                title()
                continue
            if user_input == '/reset':
                reset()
                break
            if user_input == '/exit':
                print(Fore.RED + '感谢您的参与！再见！')
                exit()
            if user_input == '/help':
                help()
                continue
            if user_input == '/clear':
                clear()
                continue

            # 数字判断
            try:
                guess = int(user_input)
            except ValueError:
                print(Fore.RED + '\n*请输入1~100间的随机整数！')
                print(Fore.RED + '*或输入/menu查看菜单。\n')
                continue

            if guess <= 0 or guess >= 100:
                print(Fore.RED + '\n*请输入1~100间的随机整数！')
                print(Fore.RED + '*或输入/menu查看菜单。\n')
                continue

            c += 1
            time += 1

            if guess > num:
                print(Fore.YELLOW + '\n*输入的数字大了。')
                print(Fore.YELLOW + f'*你剩余的次数：{7 - c} / 7\n')
            elif guess < num:
                print(Fore.YELLOW + '\n*输入的数字小了。')
                print(Fore.YELLOW + f'*你剩余的次数：{7 - c} / 7\n')
            else:
                over(num, guess, c)
                break
        else:
            # 7次都没猜中
            over(num, -1, c)

except KeyboardInterrupt:
    print(Fore.RED + '\n感谢您的参与！再见！')